import request from '@/utils/request'

/**
 * 认证服务API
 * 对接后端 erp-auth-service (端口: 9090)
 */

/**
 * 用户登录
 * @param {Object} data - 登录数据
 * @param {string} data.username - 用户名
 * @param {string} data.password - 密码
 * @returns {Promise} 登录响应数据
 */
export function login(data) {
  return request({
    url: '/api/v1/auth/login',
    method: 'post',
    data: {
      username: data.username,
      password: data.password
    }
  })
}

/**
 * 用户注册
 * @param {Object} data - 注册数据
 * @returns {Promise} 注册响应数据
 */
export function register(data) {
  return request({
    url: '/api/v1/auth/register',
    method: 'post',
    data
  })
}

/**
 * 用户登出
 * @returns {Promise} 登出响应数据
 */
export function logout() {
  return request({
    url: '/api/v1/auth/logout',
    method: 'post'
  })
}

/**
 * 刷新Token
 * @param {Object} data - 刷新数据
 * @param {string} data.refreshToken - 刷新令牌
 * @returns {Promise} 刷新响应数据
 */
export function refreshToken(data) {
  return request({
    url: '/api/v1/auth/refresh',
    method: 'post',
    data
  })
}

/**
 * 获取当前用户信息
 * @returns {Promise} 用户信息响应数据
 */
export function getProfile() {
  return request({
    url: '/api/v1/auth/profile',
    method: 'get'
  })
}

/**
 * 修改密码
 * @param {Object} data - 密码数据
 * @param {string} data.oldPassword - 原密码
 * @param {string} data.newPassword - 新密码
 * @returns {Promise} 修改密码响应数据
 */
export function changePassword(data) {
  return request({
    url: '/api/v1/auth/change-password',
    method: 'post',
    data
  })
}

/**
 * 忘记密码
 * @param {Object} data - 忘记密码数据
 * @param {string} data.email - 邮箱地址
 * @returns {Promise} 忘记密码响应数据
 */
export function forgotPassword(data) {
  return request({
    url: '/api/v1/auth/forgot-password',
    method: 'post',
    data
  })
}

/**
 * 重置密码
 * @param {Object} data - 重置密码数据
 * @param {string} data.email - 邮箱地址
 * @param {string} data.resetCode - 重置码
 * @param {string} data.newPassword - 新密码
 * @returns {Promise} 重置密码响应数据
 */
export function resetPassword(data) {
  return request({
    url: '/api/v1/auth/reset-password',
    method: 'post',
    data
  })
}

/**
 * 获取用户权限
 * @returns {Promise} 权限响应数据
 */
export function getPermissions() {
  return request({
    url: '/api/v1/auth/permissions',
    method: 'get'
  })
}

/**
 * 检查用户权限
 * @param {Object} data - 权限检查数据
 * @param {string} data.permission - 权限标识
 * @returns {Promise} 权限检查响应数据
 */
export function checkPermission(data) {
  return request({
    url: '/api/v1/auth/check-permission',
    method: 'post',
    data
  })
}
